const router = require('koa-router')();
const {getSHA256} = require('../../module/tools');
const svgCaptcha = require('svg-captcha');

/**
 * 登录页面
 */
router.get('/login', async ctx => {
  ctx.render('admin/login')
});

/**
 * 执行登录
 */
router.post('/doLogin', async ctx => {
  if(ctx.request.body.code.toLowerCase() === ctx.session.code.toLowerCase()) {
    const userInfo = {
      email: ctx.request.body.email,
      password: getSHA256(ctx.request.body.password)
    };
    const result = await ctx.state.DB.find('user', userInfo);
    if (result && result.length > 0) {
      // 将用户信息存储在session中
      ctx.session.userInfo = result[0];
      // 更新用户登录时间
      await ctx.state.DB.update('user', {_id: ctx.state.DB.getObjId(result[0]['_id'])}, {last_time: new Date()});
      // 重定向到后台欢迎页
      ctx.redirect('/admin/');
    } else {
      ctx.body = {
        msg: '用户名或密码错误'
      }
    }
  } else {
    ctx.body = {
      msg: '验证码不正确'
    }
  }
});

/**
 * 执行退出登录
 */
router.post('/logout', async ctx => {
  if (ctx.session.userInfo) {
    ctx.session.userInfo = null;
  }
  ctx.body = {
    code: 1,
    msg: '已退出登录'
  }
});

/**
 * 注册页面
 */
router.get('/registry', async ctx => {
  ctx.render('admin/registry')
});

/**
 * 执行注册
 */
router.post('/doRegistry', async ctx => {
  if (ctx.request.body) {
    const userInfo = {
      fullName: ctx.request.body.fullName,
      email: ctx.request.body.email,
      status: 1
    };
    userInfo.password = getSHA256(ctx.request.body.password);
    const result = await ctx.state.DB.insert('user', userInfo);
    if (result && result.length > 0) {
      ctx.redirect('/admin/login');
    } else {
      ctx.body = {
        msg: '注册失败'
      }
    }
  } else {
    ctx.body = {
      msg: '注册信息不得为空'
    }
  }
});

// 验证码图片
router.get('/code', async ctx => {
  const captcha = svgCaptcha.createMathExpr({
    width: 128,
    height: 34,
    fontSize: 42
  });
  ctx.session.code = captcha.text; // text是一个string
  // console.log(ctx.session.code);
  ctx.response.type = 'image/svg+xml';
  ctx.body = captcha.data;
});

module.exports = router;